/**************************************************************************
**
** Copyright (C) 2011 Frank Büttner <frank-buettner@gmx.net>
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program.  If not, see <http://www.gnu.org/licenses/>.
**
**************************************************************************/


#include "Benutzerfuehrung.h"
#include "Modulliste.h"
#include <QtGui>

Benutzerfuehrung::Benutzerfuehrung(QWidget *eltern,const Modulliste *module) : QWizard(eltern)
{
    setWindowFlags(windowFlags()^Qt::WindowContextHelpButtonHint);
    setupUi(this);
    K_Module=module;

}

void Benutzerfuehrung::changeEvent(QEvent *e)
{
    QWizard::changeEvent(e);
    switch (e->type())
    {
	case QEvent::LanguageChange:
					retranslateUi(this);
					break;
	default:
					break;
    }
}
void Benutzerfuehrung::InhaltLoeschen()
{
    txtQuelle->setText(QString());
    txtZiel->setText(QString());
}
void Benutzerfuehrung::on_sfQuellenwahl_clicked()
{
    QString Datei=QFileDialog::getOpenFileName(this,tr("Auswahl der Bescheibungsdatei ..."),QString(),K_Module->Dateifilter().join(";;"),&K_BenutztesModul);
    txtQuelle->setText(Datei);
}
void Benutzerfuehrung::on_sfZielauswahl_clicked()
{
    QString Verzeichnis=QFileDialog::getExistingDirectory(this,tr("Auswahl des Zielvereichnisses"));
    txtZiel->setText(Verzeichnis);
}

bool Benutzerfuehrung::validateCurrentPage()
{
    if (currentPage()->objectName()=="Quelle")
    {
	//gibt es die Quelldatei und kann diese von einem Modul verarbeitet werden?
	QFileInfo Datei(txtQuelle->text());
	if(!Datei.isReadable() || !Datei.exists())
	{
	    QMessageBox::critical(this,tr("Fehler"),tr("Die Datei %1 existiert nicht, oder ist nicht lesbar.").arg(txtQuelle->text()));
	    return false;
	}
	//Gibt es ein Modul für die Datei?
	if (!K_Module->ModulSuchen(Datei.suffix()))
	{
	    QMessageBox::critical(this,tr("Fehler"),trUtf8("Für die Datei %1 ist kein Modul verfügbar.").arg(txtQuelle->text()));
	    return false;
	}
	return currentPage()->validatePage();
    }
    if(currentPage()->objectName()=="Ziel")
    {
	QFileInfo Verzeichnis(txtZiel->text());
	//ist das Zielverzeichnis da und beschreibar?
	if(!Verzeichnis.exists())
	{
	    QMessageBox::critical(this,tr("Fehler"),tr("Das Verzeichnis %1 existiert nicht.").arg(txtZiel->text()));
	    return false;
	}
	if(!Verzeichnis.isWritable())
	{
	    QMessageBox::critical(this,tr("Fehler"),tr("Das Verzeichnis %1 ist nicht beschreibbar.").arg(txtZiel->text()));
	    return false;
	}
    }
    return currentPage()->validatePage();
}
